"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
var __generator = (this && this.__generator) || function (thisArg, body) {
    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
    function verb(n) { return function (v) { return step([n, v]); }; }
    function step(op) {
        if (f) throw new TypeError("Generator is already executing.");
        while (_) try {
            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
            if (y = 0, t) op = [op[0] & 2, t.value];
            switch (op[0]) {
                case 0: case 1: t = op; break;
                case 4: _.label++; return { value: op[1], done: false };
                case 5: _.label++; y = op[1]; op = [0]; continue;
                case 7: op = _.ops.pop(); _.trys.pop(); continue;
                default:
                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
                    if (t[2]) _.ops.pop();
                    _.trys.pop(); continue;
            }
            op = body.call(thisArg, _);
        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
    }
};
Object.defineProperty(exports, "__esModule", { value: true });
var mysql_1 = require("../service/unit/mysql");
var config_1 = require("../service/unit/mysql/config");
var controller_1 = require("../controller");
var deleteAnthology_1 = require("../controller/delete/deleteAnthology");
var article_1 = require("../controller/delete/article");
var updateAnthology_1 = require("../controller/update/updateAnthology");
var articleContent_1 = require("../controller/get/articleContent");
var getArticleAll_1 = require("../controller/get/getArticleAll");
var updateArticleContent_1 = require("../controller/update/updateArticleContent");
var anthology_1 = require("../controller/create/anthology");
var login_1 = require("../controller/query/login");
var register_1 = require("../controller/insert/register");
var updateUserPassword_1 = require("../controller/update/updateUserPassword");
var conn = new mysql_1.default({ DBConfig: config_1.Product });
function webRouter(router) {
    var _this = this;
    router.post('/register', function (ctx) { return __awaiter(_this, void 0, void 0, function () {
        var _a, account, password, _b, _c;
        return __generator(this, function (_d) {
            switch (_d.label) {
                case 0:
                    _a = ctx.request.body, account = _a.account, password = _a.password;
                    _b = ctx;
                    _c = {
                        status: 200
                    };
                    return [4 /*yield*/, register_1.default(conn, { name: account, password: password })];
                case 1:
                    _b.body = (_c.result = _d.sent(),
                        _c);
                    return [2 /*return*/];
            }
        });
    }); });
    //登陆
    router.post('/login', function (ctx) { return __awaiter(_this, void 0, void 0, function () {
        var _a, account, password, _b, _c;
        return __generator(this, function (_d) {
            switch (_d.label) {
                case 0:
                    _a = ctx.request.body, account = _a.account, password = _a.password;
                    _b = ctx;
                    _c = {
                        status: 200
                    };
                    return [4 /*yield*/, login_1.default(conn, { user: account, password: password })];
                case 1:
                    _b.body = (_c.result = _d.sent(),
                        _c);
                    return [2 /*return*/];
            }
        });
    }); });
    //更新用户密码 未测试
    router.post('/update/user/password', function (ctx) { return __awaiter(_this, void 0, void 0, function () {
        var _a, account, password, _b, _c;
        return __generator(this, function (_d) {
            switch (_d.label) {
                case 0:
                    _a = ctx.request.body, account = _a.account, password = _a.password;
                    _b = ctx;
                    _c = {
                        statue: 200
                    };
                    return [4 /*yield*/, updateUserPassword_1.default(conn, { name: account, password: password })];
                case 1:
                    _b.body = (_c.result = _d.sent(),
                        _c);
                    return [2 /*return*/];
            }
        });
    }); });
    //更新文章内容
    router.post('/update/article/content', function (ctx) { return __awaiter(_this, void 0, void 0, function () {
        var _a, id, title, content, _b, _c;
        return __generator(this, function (_d) {
            switch (_d.label) {
                case 0:
                    _a = ctx.request.body, id = _a.id, title = _a.title, content = _a.content;
                    _b = ctx;
                    _c = {
                        statue: 200
                    };
                    return [4 /*yield*/, updateArticleContent_1.default(conn, { id: id, content: content, title: title })];
                case 1:
                    _b.body = (_c.result = _d.sent(),
                        _c);
                    return [2 /*return*/];
            }
        });
    }); });
    //更新文章名
    router.post('/update/article/title', function (ctx) { return __awaiter(_this, void 0, void 0, function () {
        var _a, title, storeId, _b, _c;
        return __generator(this, function (_d) {
            switch (_d.label) {
                case 0:
                    _a = ctx.request.body, title = _a.title, storeId = _a.storeId;
                    _b = ctx;
                    _c = {
                        status: 200
                    };
                    return [4 /*yield*/, controller_1.updateArticleTitle(conn, { title: title }, { storeId: Number(storeId) }).
                            then(function () {
                            return 'ok';
                        })];
                case 1:
                    _b.body = (_c.result = _d.sent(),
                        _c);
                    return [2 /*return*/];
            }
        });
    }); });
    //更新文件名
    router.post('/update/anthology', function (ctx) { return __awaiter(_this, void 0, void 0, function () {
        var _a, oldAnthology, newAnthology, author, _b, _c;
        return __generator(this, function (_d) {
            switch (_d.label) {
                case 0:
                    _a = ctx.request.body, oldAnthology = _a.oldAnthology, newAnthology = _a.newAnthology, author = _a.author;
                    _b = ctx;
                    _c = {
                        status: 200
                    };
                    return [4 /*yield*/, updateAnthology_1.updateAnthology(conn, oldAnthology, newAnthology, author)];
                case 1:
                    _b.body = (_c.result = _d.sent(),
                        _c);
                    return [2 /*return*/];
            }
        });
    }); });
    //创建文集
    router.post('/create/anthology', function (ctx) { return __awaiter(_this, void 0, void 0, function () {
        var _a, anthology, name, _b, _c;
        return __generator(this, function (_d) {
            switch (_d.label) {
                case 0:
                    _a = ctx.request.body, anthology = _a.anthology, name = _a.name;
                    _b = ctx;
                    _c = {
                        status: 200
                    };
                    return [4 /*yield*/, anthology_1.default(conn, { anthology: anthology, author: name })];
                case 1:
                    _b.body = (_c.result = _d.sent(),
                        _c);
                    return [2 /*return*/];
            }
        });
    }); });
    //创建文章
    router.post('/create/article', function (ctx) { return __awaiter(_this, void 0, void 0, function () {
        var _a, anthology, author, title, _b, _c;
        return __generator(this, function (_d) {
            switch (_d.label) {
                case 0:
                    _a = ctx.request.body, anthology = _a.anthology, author = _a.author, title = _a.title;
                    _b = ctx;
                    _c = {
                        status: 200
                    };
                    return [4 /*yield*/, controller_1.create_article(conn, { anthology: anthology, author: author, title: title })];
                case 1:
                    _b.body = (_c.result = _d.sent(),
                        _c);
                    return [2 /*return*/];
            }
        });
    }); });
    //获取所有文章的列表
    router.post('/get/articleAll', function (ctx) { return __awaiter(_this, void 0, void 0, function () {
        var _a, author, anthology, _b, _c;
        return __generator(this, function (_d) {
            switch (_d.label) {
                case 0:
                    _a = ctx.request.body, author = _a.author, anthology = _a.anthology;
                    _b = ctx;
                    _c = {
                        status: 200
                    };
                    return [4 /*yield*/, getArticleAll_1.default(conn, anthology, author)];
                case 1:
                    _b.body = (_c.result = _d.sent(),
                        _c);
                    return [2 /*return*/];
            }
        });
    }); });
    //获取指定文章id的内容
    router.post('/get/article/content', function (ctx) { return __awaiter(_this, void 0, void 0, function () {
        var id, result;
        return __generator(this, function (_a) {
            switch (_a.label) {
                case 0:
                    id = ctx.request.body.id;
                    return [4 /*yield*/, articleContent_1.readArticleFile(conn, id)];
                case 1:
                    result = _a.sent();
                    ctx.body = {
                        status: 200,
                        result: result.content
                    };
                    return [2 /*return*/];
            }
        });
    }); });
    //获取指定文章id的内容
    router.param('id', function (id, ctx, next) {
        ctx.id = id;
        return next();
    }).get('/get/article/:id', function (ctx) { return __awaiter(_this, void 0, void 0, function () {
        var id, _a, _b;
        return __generator(this, function (_c) {
            switch (_c.label) {
                case 0:
                    id = ctx.id;
                    _a = ctx;
                    _b = {
                        status: 200
                    };
                    return [4 /*yield*/, articleContent_1.readArticleFile(conn, id)];
                case 1:
                    _a.body = (_b.result = _c.sent(),
                        _b);
                    return [2 /*return*/];
            }
        });
    }); });
    //获取整个文集列表
    router.post('/get/anthology', function (ctx) { return __awaiter(_this, void 0, void 0, function () {
        var COLUMN, _a, _b;
        return __generator(this, function (_c) {
            switch (_c.label) {
                case 0:
                    COLUMN = ['id', 'anthology', 'author'];
                    _a = ctx;
                    _b = {
                        status: 200
                    };
                    return [4 /*yield*/, conn.Query.query('anthology', COLUMN)];
                case 1:
                    _a.body = (_b.result = _c.sent(),
                        _b);
                    return [2 /*return*/];
            }
        });
    }); });
    //删除文章
    router.post('/delete/article', function (ctx) { return __awaiter(_this, void 0, void 0, function () {
        var storeId, TABLE_NAME, _a, _b;
        return __generator(this, function (_c) {
            switch (_c.label) {
                case 0:
                    storeId = ctx.request.body.storeId;
                    TABLE_NAME = 'article';
                    _a = ctx;
                    _b = {
                        statue: 200
                    };
                    return [4 /*yield*/, article_1.deleteArticle(conn, TABLE_NAME, { storeId: storeId })];
                case 1:
                    _a.body = (_b.results = _c.sent(),
                        _b);
                    return [2 /*return*/];
            }
        });
    }); });
    //删除文集
    router.post('/delete/anthology', function (ctx) { return __awaiter(_this, void 0, void 0, function () {
        var _a, storeId, author, TABLE_NAME, _b, _c;
        return __generator(this, function (_d) {
            switch (_d.label) {
                case 0:
                    _a = ctx.request.body, storeId = _a.storeId, author = _a.author;
                    TABLE_NAME = 'anthology';
                    _b = ctx;
                    _c = {
                        status: 200
                    };
                    return [4 /*yield*/, deleteAnthology_1.deleteAnthology(conn, TABLE_NAME, { storeId: storeId, author: author })];
                case 1:
                    _b.body = (_c.result = _d.sent(),
                        _c);
                    return [2 /*return*/];
            }
        });
    }); });
}
exports.default = webRouter;
